package com.cloud.core.utils;

import android.graphics.Bitmap;
import android.graphics.Color;
import com.huawei.hms.hmsscankit.ScanUtil;
import com.huawei.hms.hmsscankit.WriterException;
import com.huawei.hms.ml.scan.HmsBuildBitmapOption;
import com.huawei.hms.ml.scan.HmsScan;

/**
 * @Author： Chen
 * @Date： 2020/7/23
 * @Desc： 生成二维码的工具
 */
public class QRCodeUtils {
    private static int IMAGE_HALFWIDTH = 50;//宽度值，影响中间图片大小

    /**
     * 生成二维码，默认大小为500*500
     *
     * @param text 需要生成二维码的文字、网址等
     * @return bitmap
     */
    public static Bitmap createQRCode(String text) {
        return createQRCode(text, 150);
    }

    /**
     * 生成二维码
     *
     * @param text 需要生成二维码的文字、网址等
     * @param size 需要生成二维码的大小（）
     * @return bitmap
     */
    public static Bitmap createQRCode(String text, int size) {
        try {
            HmsBuildBitmapOption options = new HmsBuildBitmapOption.Creator()
                    .setBitmapMargin(1)
                    .setBitmapColor(Color.BLACK)
                    .setBitmapBackgroundColor(Color.WHITE)
                    .create();
            Bitmap resultImage = ScanUtil.buildBitmap(text, HmsScan.QRCODE_SCAN_TYPE, size, size, options);
            return resultImage;
        } catch (WriterException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 生成带logo的二维码，默认二维码的大小为500，logo为二维码的1/5
     *
     * @param text    需要生成二维码的文字、网址等
     * @param mBitmap logo文件
     * @return bitmap
     */
    public static Bitmap createQRCodeWithLogo(String text, Bitmap mBitmap) {
        return createQRCodeWithLogo(text, 500, mBitmap);
    }

    /**
     * 生成带logo的二维码，logo默认为二维码的1/5
     *
     * @param text    需要生成二维码的文字、网址等
     * @param size    需要生成二维码的大小（）
     * @param mBitmap logo文件
     * @return bitmap
     */
    public static Bitmap createQRCodeWithLogo(String text, int size, Bitmap mBitmap) {
        try {
            HmsBuildBitmapOption options = new HmsBuildBitmapOption.Creator()
                    .setBitmapMargin(1)
                    .setBitmapColor(Color.BLACK)
                    .setBitmapBackgroundColor(Color.WHITE)
                    .setQRLogoBitmap(mBitmap)
                    .create();
            Bitmap resultImage = ScanUtil.buildBitmap(text, HmsScan.QRCODE_SCAN_TYPE, size, size, options);
            return resultImage;
        } catch (WriterException e) {
            e.printStackTrace();
            return null;
        }
    }
}
